package com.xing.Order.Action;

import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts2.ServletActionContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;

import com.xing.Order.Entity.Order;
import com.xing.Order.Service.OrderService;

import net.sf.json.JSONObject;

/**
*@author xingxing
*@version 1.0
*@time 2017年10月19日 下午11:32:52 
*class explain：
*订单类
*/
@Controller//注解：说明是控制层
@Scope("prototype")//注解：作用范围
public class OrderAction {
	private HttpServletResponse response = ServletActionContext.getResponse();//为了得到response,响应
	private HttpServletRequest request = ServletActionContext.getRequest();//为了得到request,请求
	
	@Autowired//注解 注入OrderService这个Bean
	OrderService orderService;
	
	/**
	 * @author xingxing
	 * @date 2017-10-20 09:15:55
	 * @return 
	 * return 返回的字符串，对应Result标签的name
	 * Result标签在struts2的这些配置文件中
	 */
	public String Page() {
		return "orderpage";//跳转指向
	}
	
	/**
	 * @author xingxing
	 * @date 2017-10-19 23:23:57
	 * @throws IOException 
	 * datagrid，访问的地址，然后返回数据，
	 * 用的是ajax的异步访问的形式
	 */
	public void CusList() throws IOException {
		//search 参数，是搜索参数
		String search=request.getParameter("search")==null?"":request.getParameter("search");
		//datagrid，总条目数，通过orderService.query() 方法获取的
		int total=orderService.query(search);
		//pageno 当前datagrid列表的页数，request.getParameter("前台传来的参数")--获取前台传过来的值
		String pageno=request.getParameter("page")==null?"1":request.getParameter("page");
		//datagrid当前的行数，雷同于上一行
		String rows=request.getParameter("rows")==null?"1":request.getParameter("rows");
		//返回数据，通过orderService.listpage(pageno, rows,search)方法获取的
		List<Order> list=(List<Order>) orderService.listpage(pageno, rows,search);
		/*
		 * 因为datagrid对应的数据类型是JsonObject类型，
		 * JsonObject类型：{"key1":"value1","key2":"value2"...}
		 * List 类型：["value1","value2"...]
		 */
		Map map = new HashMap();
		//datagrid既要有total这个参数，也要有rows这个参数...传参需要key跟value对应
		//而Key-value 对应的类型，常见的就是Map
		map.put("total", total);
		map.put("rows", list);
		//把Map转换为JSONObject类型
		JSONObject jsonObject= JSONObject.fromObject(map);
		//调用了response的输出流，输出jsonObject字符串到前台，通过.toString()这个方法把jsonObject转换为字符串
		response.getWriter().write(jsonObject.toString());
	}
	
	//实体
	private Order order;
	public Order getOrder() {
		return order;
	}
	public void setOrder(Order order) {
		this.order = order;
	}
}
